// 常用到的公共方法 独立于每个项目之间
import { h } from 'vue'

// 使用h新建iconFont的vueNode
export const newHIconVueNode = (iconName: string) => {
  return h('i', { class: ['iconfont', iconName] })
}

// 获取localStorage并解析
export const getLocalStorage: getLocalStorageType = (key: string, jsonTransform?: boolean) => {
  const localString = localStorage.getItem(key)
  if (!localString || !jsonTransform) return localString
  try {
    return JSON.parse(localString)
  } catch (error) {
    console.log(`[${key}] 为非法JSON字符串`, { key, value: localString })
    return null
  }
}

// 处理url 根据开发和生产环境生成不同的地址 用于图片等资源访问
export const getUrl = (type: 'ws' | 'ftp', path?: string, params?: Record<string, string | number>) => {
  // 获取需要的host
  let host = window.location.host // 当前host地址
  // 更具是否是开发环境修改是否使用当前host
  if (import.meta.env.DEV === true) host = ''

  // 获取vite环境变量以及协议
  let viteUrl = '' // vite环境变量
  let protocol = window.location.protocol + '//' // 当前协议
  switch (type) {
    // ws地址
    case 'ws':
      viteUrl = import.meta.env.VITE_WS_URL
      // 更具协议修改ws、wss
      if (protocol === 'https://') protocol = 'wss://'
      else protocol = 'ws://'
      break
    // ftp地址
    case 'ftp':
      // ftp 请传入完整路径携带协议，http | https
      if (import.meta.env.DEV === true) protocol = ''
      viteUrl = import.meta.env.VITE_FTP_URL
      break
  }

  // params参数拼接
  let paramsString = '' // params参数
  if (params) {
    paramsString += '?'
    let paramsArr: string[] = []
    for (const key in params) {
      if (Object.prototype.hasOwnProperty.call(params, key)) {
        const value = params[key]
        paramsArr.push(`${key}=${value}`)
      }
    }
    paramsString += paramsArr.join('&')
  }

  //拼接返回
  return protocol + host + viteUrl + path + paramsString
}


// 表格序号index显示转换
export const indexShow = (index: number, current: number, size: number): string | number => {
    let num: number = (current - 1) * size
    if (current > 1) return Number(num + index + 1) < 10 ? '0' + (num + index + 1) : num + index + 1
    return Number(index + 1) < 10 ? '0' + (index + 1) : index + 1
  }